1000 HOME : INPUT "HOW MANY NUMBERS TO BE SORTED? ";I$:N = VAL(I$): IF I$ = "" THEN 1000
1010 DIM T(N +1),H(N +1),DE$(5)
1020 FOR I = 1 TO N:T(I) = INT( RND(1) *100 +1):H(I) = T(I): NEXT
1030 VTAB 3: CALL -958: PRINT "ASCENDING OR DESCENDING ORDER (A/D)? ";: GET S$: PRINT S$: IF S$ < >"A" AND S$ < >"D" THEN 1030
1040 IF S$ = "A" THEN POKE 2435,178
1050 IF S$ = "D" THEN POKE 2483,178
1060 S1 = (S$ = "A")
1070 DE$(1) = " IF/THEN "
1071 DE$(2) = " REMPOKE "
1072 DE$(3) = "SPECIAL IF"
1073 DE$(4) = "SHELLSORT "
1074 DE$(5) = "QUICKSORT "
2000 FOR NT = 1 TO 5
2100 HOME : INVERSE : PRINT "NUMBERS TO BE SORTED ": NORMAL : PRINT
2200 FOR I = 1 TO N:T(I) = H(I): PRINT T(I),: NEXT : PRINT : PRINT
2300 PRINT "START ";: INVERSE : PRINT "TEST ";NT;: NORMAL : PRINT " BY PRESSING ANY KEY": PRINT : PRINT "A BELL WILL SIGNAL THE END OF THE SORT ";: GET I$: PRINT : PRINT : PRINT : HTAB 10: PRINT ">>>> SORTING <<<<": PRINT
2400 ON NT GOSUB 100,200,300,400,500
2500 HOME : INVERSE : PRINT "TEST ";NT;" SORT COMPLETED";: HTAB 26: PRINT DE$(NT): NORMAL : PRINT
2600 FOR I = 1 TO N: PRINT T(I),: NEXT : PRINT : GOSUB 9100
2700 NEXT NT
9000 POKE 2435,58: POKE 2483,58: PRINT : PRINT : PRINT " RUN (FOR ANOTHER TEST)";: CALL -998: END
9100 HTAB 6: VTAB 24: PRINT "PRESS ANY KEY TO CONTINUE";: GET I$: RETURN